package com.peak.distribution.service.order;

import com.peak.distribution.entity.agent.DisAgent;
import com.peak.distribution.entity.order.DisOrder;

/**
 * 订单服务
 * @author Haley Gao
 *
 */
public interface DisOrderService {

	/**
	 * 下单，根据页面传回的json数据进行
	 * @param cartJson
	 * @param payType 
	 * @param receiverId 
	 * @param remark 
	 */
	DisOrder add(String cartJson, Integer receiverId, String payChannel, String remark);

	/**
	 * 代理商取消自己的订单，需要验证是否是代理商自己的订单，也要验证订单状态是否正确
	 * @param agentId
	 * @param orderId
	 */
	void cancel(DisAgent agent, Integer orderId);
	
	/**
	 * 确认订单已收款
	 * @param orderId
	 */
	void confirmPaid(Integer orderId);
	
	/**
	 * 发货
	 * @param orderId
	 * @param express
	 * @param waybillNo
	 */
	void shipping(Integer orderId, String express, String waybillNo);

	/**
	 * 计算物流费用
	 * @param goodsFee
	 * @return
	 */
	int calculateShippingFee(Integer goodsFee);

	/**
	 * 定时执行，每小时扫一次，关闭那些未支付订单
	 */
	void closeUnpayOrder();

	/**
	 * 定时执行，提醒管理员发货的
	 */
	void alertDeliveryOrder();

	/**
	 * 定时执行，查询物流是否已收货
	 */
	void checkReceiveOrder();
}
